/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Compras.Controlador;

import com.dp1.pucp.Compras.DAO.ProveedorDAO;
import com.dp1.pucp.Compras.VIsta.*;
import com.dp1.pucp.Compras.Controlador.*;

import com.dp1.pucp.Modelo.Clases.Costoinsumos;
import com.dp1.pucp.Modelo.Clases.Moneda;
import com.dp1.pucp.Modelo.Clases.Proveedor;
import com.dp1.pucp.Modelo.Clases.Tipoproducto;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

/**
 *
 * @author ubuntu64
 */
public class AgregarProdProvControlador {

    AgregarProdProvGUI vista;
    ProveedorDAO dao;
    ProdxProvControlador controlador;
    ArrayList<Costoinsumos> listaproductos = new ArrayList<>();
    
    Tipoproducto producto = new Tipoproducto();
    Proveedor prov;

    public AgregarProdProvControlador(AgregarProdProvGUI vista, ProveedorDAO dao, ProdxProvControlador controlador, Proveedor proveedor) {
        this.vista = vista;
        this.dao = dao;
        this.controlador = controlador;
        prov=proveedor;

        vista.addBuscarProductoListener(new buscarProductoListener(this)); //con esto saco el producto
        vista.addAgregarListener(new agregarProductoListener()); //con esto saco la listita de productos que quiero guardar
        vista.addGuardarListener(new guardarListener(controlador));
        vista.addCancelarListener(new cancelarListener());
        vista.addLimpiarListener(new limpiarListener());
    }

    public void setProducto(Tipoproducto p){ //con esto saco el producto
        this.producto = p;
        this.vista.setTxtProducto(p.getNombre());
                
    }
    
    class buscarProductoListener implements ActionListener {

        AgregarProdProvControlador controlador;

        public buscarProductoListener(AgregarProdProvControlador controlador) {
            this.controlador = controlador;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            BuscarProductoGUI vista1 = new BuscarProductoGUI(null, true);
            BuscarProductoControlador c = new BuscarProductoControlador(dao, vista1, controlador);
            vista1.setVisible(true);
        }
    }

    class agregarProductoListener implements ActionListener {

        

        @Override
        public void actionPerformed(ActionEvent e) {
            Costoinsumos costoinsumo = new Costoinsumos();
            boolean registrado=false;
            int reg = 0;
            costoinsumo.setCosto(vista.getCosto());
            costoinsumo.setFechainicio(vista.getFechaInicio());
            costoinsumo.setFechafin(vista.getFechaFin());
            costoinsumo.setTipoproducto(producto);
            
            listaproductos.add(costoinsumo);
            vista.llenaGrilla(listaproductos);
        }
    }

    class limpiarListener implements ActionListener {        

        @Override
        public void actionPerformed(ActionEvent e) {
            vista.LimpiarDatos();
        }
    }

    class guardarListener implements ActionListener {

        ProdxProvControlador controlador;

        public guardarListener(ProdxProvControlador controlador) {
            this.controlador = controlador;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            boolean registrado=false;
            ArrayList<Costoinsumos> listacostos = dao.listarCostos(prov);
            Costoinsumos auxiliar = new Costoinsumos();
            Moneda moneda = new Moneda();
            moneda = dao.listarMoneda();
            
            int registro=0;
            for (int i=0; i<listaproductos.size(); i++){
                for (int j=0; j<listacostos.size(); j++){
                    if (listaproductos.get(i).getTipoproducto().getIdtipoproducto()==listacostos.get(j).getTipoproducto().getIdtipoproducto())
                    {
                        registrado=true;
                        registro=j;
                        auxiliar=listacostos.get(j);
                        break;
                    }
                }
                if (registrado==true){
                    auxiliar.setCosto(listaproductos.get(i).getCosto());
                    listacostos.set(registro, auxiliar);
                }   
                else{
                    auxiliar = listaproductos.get(i);
//                    auxiliar.setProveedor(listacostos.get(0).getProveedor());
                    auxiliar.setProveedor(prov);
                    auxiliar.setMoneda(moneda);
                    listacostos.add(auxiliar);
                }
                
               
            }
//            controlador.guardarCostos(listacostos);
            for (int i=0; i<listacostos.size(); i++){
                dao.guardarCostoInsumo(listacostos.get(i));
            }
            controlador.listaCostos(listacostos);
            vista.dispose();
            
        }
    }

    class cancelarListener implements ActionListener {

        AgregarProdProvControlador controlador;

        @Override
        public void actionPerformed(ActionEvent e) {
            vista.dispose();
        }
    }
}
